package com.xianzhi.service.impl;

import com.xianzhi.bean.Ad;
import com.xianzhi.dao.AdDao;
import com.xianzhi.dto.AdDto;
import com.xianzhi.service.AdService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;


import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
public class AdServiceImpl implements AdService {
    @Autowired
    private AdDao adDao;

    @Value("${adImage.savePath}")
    private String adImageSavePath;
    @Value("${adImage.url}")
    private String adImageUrl;

    @Override
    public List<AdDto> searchByPage(AdDto adDto) {
        List<AdDto> reuslt=new ArrayList<>();
        //将形参的值传给Ad，利用BeanUtils方法
        Ad ad=new Ad();
        BeanUtils.copyProperties(adDto,ad);
        List<Ad> adList = adDao.selectByPage(ad);
        for (Ad ads:adList){
            //要将List<Ad>转换为List<AdDto>类型
            AdDto dto=new AdDto();
            BeanUtils.copyProperties(ads,dto);
            reuslt.add(dto);
        }
        return reuslt;
    }

    @Override
    public boolean add(AdDto adDto) {
        Ad ad=new Ad();
        ad.setTitle(adDto.getTitle());
        ad.setLink(adDto.getLink());
        ad.setWeight(adDto.getWeight());
        //判断文件是否为空
        if (adDto.getImgFile()!=null && adDto.getImgFile().getSize()>0){
            //如果文件存在我们要获取到文件名称（格式为：系统时间_原始文件名）
            String fileName=System.currentTimeMillis()+"_"+adDto.getImgFile().getOriginalFilename();
            System.out.println(adDto.getImgFile());
            System.out.println(adDto.getImgFile().getOriginalFilename());
            //要构造一下file对象（上传到服务器的路径）
            File file=new File(adImageSavePath+fileName);
            File fileForder=new File(adImageSavePath);
            //如果这个路径不存在
            if (!fileForder.exists()){
                //创建一个文件夹
                fileForder.mkdirs();
            }
            try {
                //将文件上传到服务器
                adDto.getImgFile().transferTo(file);
                //还要将文件名存到数据库
                ad.setImgFileName(fileName);
                //调用dao中的方法
                adDao.insertImg(ad);
                return true;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return false;
    }
}
